前面我們聊過 分支、合併、rebase,也學會查看 commit 歷史(git log
)。
今天,我們要介紹一個實用但常被忽略的指令:git cherry-pick
。
它是把歷史中你想要的 commit,搬到目前分支,就像從櫻桃樹上挑你喜歡的果子 🍒。
git cherry-pick
是什麼?簡單說:
從其他分支或歷史 commit,挑選一個或多個 commit,應用到你目前所在的分支。
feature
分支修了一個 bug,但現在 main
分支也需要這個修復。簡單來說,cherry-pick 讓你自由選擇 commit,不必整個搬家。
假設你想把 commit a1b2c3d
的修改,搬到目前分支:
git cherry-pick a1b2c3d
如果想一次挑多個 commit:
git cherry-pick a1b2c3d e4f5g6h i7j8k9l
git cherry-pick --continue
繼續。git cherry-pick a1b2c3d^..i7j8k9l
^
表示從前一個 commit 開始..
表示到結尾 commitgit cherry-pick -n a1b2c3d
-n
或 -no-commit
:只把修改套用到暫存區,不會自動 commitgit cherry-pick --abort
Cherry-pick 也可能碰到衝突,尤其是原本分支和目標分支同一檔案有不同修改。
處理流程:
git status
查看衝突檔案git add <file>
標記已解決git cherry-pick --continue
繼續套用如果不想要這個 cherry-pick,直接:git cherry-pick --abort
feature
與 main
。feature
分支新增一個檔案,commit 後記下 hash。main
分支,用 git cherry-pick
將這個 commit 套用到 main
。git cherry-pick -n
合併多個 commit 再一次 commit。--continue
與 --abort
。今天我們學到:
git cherry-pick
可以 挑選特定 commit。-n
可以更自由地組合多個 commit。-continue
,或用 -abort
放棄掌握 cherry-pick,讓你在 Git 世界裡 精準調度每個 commit,想挑什麼就挑什麼